Cloud business applications must comply with many architecture principles that are essential in order to run business applications in a cloud environment with acceptable total cost of ownership. One of these architectural principles is that the cloud environment must leverage both stateless and stateful computing protocols, owing to the fact that some business applications utilize stateless computing protocols and some business applications utilize stateful computing protocols. A stateless computing protocol is a protocol that treats each request as an independent transaction and that is thus unrelated to any previous request. A stateful computing protocol is a protocol that requires the tracking of an internal state so that a subsequent request can be handled in a manner that takes into account a prior request from the same entity. An example of a commonly used stateless computing protocol is the Representational State Transfer (REST) protocol. In the REST protocol, communication between a client and a server occurs in the form of independent pairs of request and response without requesting that the server maintain any information about the session or precedent requests. This architectural principle facilitates much greater flexibility in system operations and also much greater scalability to achieve better data center utilization.
The usefulness of a stateless computing protocol, however, is limited in that there are some business applications, some of them quite complex, that utilize a stateful computing protocol and thus would need to be re-implemented from scratch in order to facilitate a stateless design. This can be quite time consuming and expensive. Extension of such stateful business applications to the cloud, where instances of the application can potentially be distributed to multiple different application servers, is complicated by this lack of compatibility with their stateful designs.